package com.emerquim.security.beans;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import org.springframework.security.ui.AbstractProcessingFilter;

import com.emerquim.bean.dao.ConexionJDBC;

/**
 * Clase para manejar el logeo del usuario en la aplicacion
 * @author Felipe Criales
 */
public class LoginBean {

    /**
     * El identificador del usuario
     */
    private String userId;

    /**
     * El password del usuario
     */
    private String password;

    /**
     * El constructor de la clase
     */
    public LoginBean() {

        Exception ex = (Exception) FacesContext
                .getCurrentInstance()
                .getExternalContext()
                .getSessionMap()
                .get(AbstractProcessingFilter.SPRING_SECURITY_LAST_EXCEPTION_KEY);

        if (ex != null)
            FacesContext.getCurrentInstance().addMessage(
                    null,
                    new FacesMessage(FacesMessage.SEVERITY_ERROR, ex
                            .getMessage(), ex.getMessage()));

    }

    /**
     * Retorna el password del usuario
     * @return
     */
    public String getPassword() {
        return password;
    }

    /**
     * Cambia el password del usuario
     * @param password
     */
    public void setPassword(String password) {
        this.password = password;
    }

    /**
     * Retorna el identificador del usuario
     * @return
     */
    public String getUserId() {
        return userId;
    }

    /**
     * Cambia el valor de la identificador del usuario
     * @param userId
     */
    public void setUserId(String userId) {
        this.userId = userId;
    }

    /**
     * Action listener para logear al usuario
     * @param e El evento
     * @throws java.io.IOException
     */
    public void login(ActionEvent e) throws java.io.IOException {
    	this.password = ConexionJDBC.hashMD5(this.password);    	
        FacesContext.getCurrentInstance().getExternalContext().redirect("/emerquim/j_spring_security_check?j_username=" + userId + "&j_password=" + password);
    }
    
    /**
     * Action listener para terminar la sesion del usuario
     * @param e El evento
     * @throws java.io.IOException
     */
    public void logout(ActionEvent e) throws java.io.IOException {
        FacesContext.getCurrentInstance().getExternalContext().redirect("/emerquim/j_spring_security_logout");
    }
}